package com.admin.service;

import java.util.List;
import java.util.Map;

import com.admin.domain.AdminDO;
import com.admin.req.user.MemberReq;
import com.admin.vo.PageVO;
import com.admin.vo.ResultVO;
import com.admin.vo.SimpleResultVO;
import com.admin.vo.system.AdminInfoVO;
import com.admin.vo.system.AdminLoginVO;
import com.admin.vo.system.ListAdminVO;

/**
 * 管理员service
 * 
 * @author ZY
 * @date 2018/09/30
 */
public interface AdminService extends BaseService<AdminDO> {


    /**
     * checked
     *
     * @param userId
     * @return
     */
    AdminInfoVO getAdminInfoVO(Integer userId);


    ResultVO<AdminLoginVO> login(String username, String password, String code, String uuid);

    /**
     * 
     * @param userIds
     * @return
     */
    public SimpleResultVO deleteByPrimaryKeys(List<Integer> userIds);

    /**
     * checked
     * @param userId
     * @return
     */
    SimpleResultVO deleteByPrimaryKey(Integer userId);

    /**
     * 
     * @param pageIndex
     * @param pageSize
     * @param params
     * @return
     */
    ResultVO<PageVO<ListAdminVO>> getPageList(Integer pageIndex, Integer pageSize, Map<String, Object> params);



    /**
     * 修改密码
     * 
     * @param username
     * @param oldPassword
     * @param newPassword
     * @param confirmPassword
     * @return
     */
    SimpleResultVO updatePassWord(String username, String oldPassword, String newPassword, String confirmPassword);


    /**
     * 重置密码
     * @param userId
     * @return
     */
    Boolean resetPassWord(Integer userId);

    /**
     * 新增用户
     * 
     * @param adminDO
     * @param roleIds
     * @return
     */
    SimpleResultVO saveAdminDO(AdminDO adminDO, List<Long> roleIds);
    /**
     * 修改用户
     *
     * @param adminDO
     * @param roleIds
     * @return
     */
    SimpleResultVO updateAdminDO(AdminDO adminDO, List<Long> roleIds);

    /**
     * 新增 申报用户
     * @param memberReq
     * @return
     */
    SimpleResultVO saveMember(MemberReq memberReq);

    /**
     * 修改- 申报用户
     * @param memberReq
     * @return
     */
    SimpleResultVO updateMember(MemberReq memberReq);


    /**
     * 获取当前用户 - 负责的区域申报
     * @return
     */
    List<Integer> getResponsibleAreaIds();


    Integer getResponsibleAreaIds(Integer userId);


    /**
     * 统计区域下 正常申报的用户的数量
     * @param memberLevel
     * @param regionId
     * @return
     */
    Integer totalUserQuantity(String memberLevel, Integer regionId);

    /**
     * 区域 本轮申报-提交上来的数量
     * @param memberLevel
     * @param regionId
     * @return
     */
    Integer currentRoundDeclareQuantity(String memberLevel, Integer regionId);


}
